// 题目要求：
// 给定 n 个整数，有可能是正有可能是负的，1 <= a[i] <= 2000
// 从第一个整数出发，当 a[i] 为正数，可以一次跳跃到 i + a[i] 的位置上
// 当 a[i] 为负数，只能一次跳跃到小于等于 i + a[i] 位置上，如果跳到的位置为小于 1 的位置，则跳到 1 位置
// 只要到达 n 位置，才算跳到终点
// 问最少跳几次才能达到终点


// 解题思路：
// 采用层序遍历的思路：
// 从 1 位置开始出发，能够跳到 [1 + 1, max(1 + a[i])] 的范围，跳跃次数加 1，区间使用 [left, right] 表示
// 定义 i 遍历 [left, right] 区间，下一次跳跃的范围为 [right + 1, max(i + a[i])]
// 一层一层向终点扩展，直到最终 right 的值大于等于 n
// 向外扩的次数就是跳跃次数


import java.util.*;



public class Bridge {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        int[] a = new int[n + 1];

        for(int i = 1; i <= n; i++){
            a[i] = in.nextInt();
        }

        int left = 1; int right = 1;
        int count = 0;
        boolean flag = false;
        while(right < n){
            count++;
            int max = right;
            for(int i = left; i <= right; i++){
                max = Math.max(max, i + a[i]);
            }
            left = right + 1;
            right = max;
            if(right < left) {
                flag = true;
                break;
            }
        }

        if(flag) System.out.println(-1);
        else System.out.println(count);
    }
}
